home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-01-28 | 856 b | 31 lines | [TEXT/gamI] |
- ; Symbol manipulation procedures not in standard Scheme
-
- (define gensym
- (let ((count 0))
- (lambda l
- (let ((prefix (if (pair? l)
- (if (symbol? (car l))
- (symbol->string (car l))
- (car l))
- "g")))
- (let ((sym (make-vector 3)))
- (vector-set! sym 0 (string-append prefix (number->string count)))
- (vector-set! sym 1 '())
- (vector-set! sym 2 #f)
- (##subtype-set! sym 1)
- (set! count (+ count 1))
- sym)))))
-
- (define (get sym prop)
- (let ((x (assq prop (##vector-ref sym 1))))
- (if x
- (cdr x)
- #f)))
-
- (define (put sym prop val)
- (let ((x (assq prop (##vector-ref sym 1))))
- (if x
- (set-cdr! x val)
- (##vector-set! sym 1 (cons (cons prop val) (##vector-ref sym 1))))
- #f))
-